StupidBeauty
Read times:3076Posted at: - no title specified

Qt5.4文档翻译:QCoreApplication,QCoreApplication Class

成员函数文档

[static] void  QCoreApplication:: addLibraryPath (const  QString  &  path )

将路径( path )放置到库路径列表的开头,确保在搜寻库的过程中首先在这个路径中进行搜索。如果 path 为空或者已经存在于路径列表中,则,路径列表不会被改变。

默认 的路径列表中只包含着一个条目,即为插件 的安装目录。插件 的默认安装目录是 INSTALL/plugins ,其中, INSTALL 是 Qt 的安装目录。

参考 removeLibraryPath () libraryPaths () setLibraryPaths ()

[static] qint64  QCoreApplication:: applicationPid ()

返回此应用程序的当前进程编号(ID)。

这个函数是从Qt 4.4 开始引入的。

[static] bool  QCoreApplication:: isSetuidAllowed ()

如果该应用程序在UNIX 平台上被允许执行setuid,则返回真(true)。

这个函数是从Qt 5.3 开始引入的。

参考 QCoreApplication::setSetuidAllowed ()

[virtual] bool  QCoreApplication:: notify ( QObject  *  receiver QEvent  *  event )

将事件 event 发送给接收者 receiver receiver->event(event)。返回由接收者的事件处理器所返回的值。注意,对于发送任意线程中任意对象的所有事件,都会调用此函数。

对于特定类型 的事件 (例如 ,鼠标和键盘事件 ) ,如果接 收表示对该事件不感兴趣( 也就是说,它返回假( false ),则,事件会被传递给其亲代对象,并在同样的条件下会继续向上传递直到达到最顶级的对象。

要想处理事件,一共有五种不同的方式;其中之一便是覆盖这个虚函数。以下列出所有5种处理方式:

  1. 1. 覆盖 paintEvent() mousePressEvent() 等等 这是最常见、最简单也最弱小的方式。

  2. 2.覆盖本函数。这种方式功能强大,提供了完整的控制;但是,每次只能有一个子类处于活跃状态。

  3. 3. QCoreApplication::instance ()上安装一个事件过滤器。 这种一个事件过滤器能够处理针对所有部件的所有事件 ,因此, 它的强大程度与覆盖notify()的方式相同;并且 ,能够安装多个全局 的事件过滤器。全局 的事件过滤器能够接收 到针对 处于禁用状态 的部件 的鼠标事件。注意 ,应用程序 的事件过滤器,只会在遇到针对主线程中的对象的事件时才会被调用。

  4. 4. 覆盖 QObject::event () ( QWidget 就是这么干的 ) 。如果 妳这么干的话, 妳会接收到制表 (Tab) 按键的事件,并且 会在任何 与部件相关的事件过滤器之前接收 到事件。

  5. 5.在目标对象上安装一个事件过滤器。这样一个事件过滤器,能够接收到所有的事件,包括制表符(Tab)和制表符反向(Shift+Tab)按键事件,嘦它们不会改变焦点部件即可。

参考 QObject::event () installNativeEventFilter ()

[static] void  QCoreApplication:: postEvent ( QObject  *  receiver QEvent  *  event int priority  = Qt::NormalEventPriority)

将事件 event 加入到一个事件队列并且立即返回,对象 receiver 会被设置为该事件的接收者。

此事件必须在堆上分配,因为,投递事件队列会获取该事件的所有权并且在它被投递之后删除它。在事件被投递之后再访问它,是 不安全的

当控制权回到主事件循环的时候,队列 中存储的所有事件都会通过 notify ()函数来发送。

事件 会按照优先 priority 以降序排列, 也就是说,具有较高优先 级的事件会排在较低优先级的事件之前。优先 priority 可以是任何整数值, 也就是说, INT_MAX INT_MIN之间 的整数值,并且包括这两个值;参考 Qt::EventPriority 以了解更多信息。具有相同优先 级的事件,会按照投递的顺序来处理。

注意 这个函数是 线程安全的

这个函数是从Qt 4.3 开始引入的。

参考 sendEvent () notify () sendPostedEvents () Qt::EventPriority

[static] bool  QCoreApplication:: removeTranslator ( QTranslator  *  translationFile )

将翻译文件 translationFile 从这个应用程序所使用的翻译文件列表中删除。(它并不会从系统中删除该文件。)

如果成功 则返回真( true ),失败则返回假(false)。

参考 installTranslator () translate () QObject::tr ()

[static] void  QCoreApplication:: setSetuidAllowed ( bool allow )

如果allow 为真(true),则允许这个应用程序在UNIX 平台上执行setuid。

如果 allow 为假(false)(默认值),并且Qt 检测到当前程序是以一个与实际用户编号不同的用户编号来运行的,那么, 当有一个 QCoreApplication 实例被创建时,应用程序会被终止(aborted)。

由于Qt本身 有着巨大的攻击面(attack surface),所以,它不适合于用来开发setuid 程序 。然而 ,由于历史原因,某 些应用程序需要以这种方式运行。 这个标志位会阻止 Qt 在探测到这种情况时终止程序, 而它本身也要在创建 QCoreApplication 实例之前设置。

注意 强烈建议妳不要启用这个选项,因为它带来了安全风险。

此函数是从Qt 5.3 开始引入的。

参考 isSetuidAllowed ()

https://twitter.com/nisopict_bot_kr/status/416476186164752384/photo/1

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4